﻿using System;
using System.Linq;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Interface;


namespace OpenAuth.App
{
    public class OUTP_JZJLKApp : CisBaseApp<OUTP_JZJLK>
    {
       

        /// <summary>
        /// 加载列表
        /// </summary>
        //public TableData Load(QueryOUTP_JZJLKListReq request)
        //{
        //    var loginContext = _auth.GetCurrentUser();
        //    if (loginContext == null)
        //    {
        //        throw new CommonException("登录已过期", Define.INVALID_TOKEN);
        //    }

        //    var properties = loginContext.GetProperties("OUTP_JZJLK");

        //    if (properties == null || properties.Count == 0)
        //    {
        //        throw new Exception("当前登录用户没有访问该模块字段的权限，请联系管理员配置");
        //    }


        //    var result = new TableData();
        //    var objs = Repository.Find(null);
        //    if (!string.IsNullOrEmpty(request.key))
        //    {
        //        objs = objs.Where(u => u.Id.Contains(request.key));
        //    }


        //    var propertyStr = string.Join(',', properties.Select(u => u.Key));
        //    result.columnHeaders = properties;
        //    result.data = objs.OrderBy(u => u.Id)
        //        .Skip((request.page - 1) * request.limit)
        //        .Take(request.limit).Select($"new ({propertyStr})");
        //    result.count = objs.Count();
        //    return result;
        //}

        public void Add(AddOrUpdateOUTP_JZJLKReq req)
        {
            var obj = req.MapTo<OUTP_JZJLK>();
            //todo:补充或调整自己需要的字段
            //obj.CreateTime = DateTime.Now;
            //var user = _auth.GetCurrentUser().User;
            //obj.CreateUserId = user.Id;
            //obj.CreateUserName = user.Name;
            Repository.Add(obj);
        }

        // public void Update(AddOrUpdateOUTP_JZJLKReq obj)
        //{
        //    var user = _auth.GetCurrentUser().User;
        //    Repository.Update(u => u.Id == obj.Id, u => new OUTP_JZJLK
        //    {
        //        GHXH = obj.GHXH,
        //        PATID = obj.PATID,
        //        BLH = obj.BLH,
        //        YBDM = obj.YBDM,
        //        CARDNO = obj.CARDNO,
        //        HZXM = obj.HZXM,
        //        PY = obj.PY,
        //        WB = obj.WB,
        //        SEX = obj.SEX,
        //        BIRTH = obj.BIRTH,
        //        DWDM = obj.DWDM,
        //        DWMC = obj.DWMC,
        //        CSD_S = obj.CSD_S,
        //        CSD_X = obj.CSD_X,
        //        SFZH = obj.SFZH,
        //        LXDZ = obj.LXDZ,
        //        LXDH = obj.LXDH,
        //        YZBM = obj.YZBM,
        //        LXR = obj.LXR,
        //        YLXM = obj.YLXM,
        //        DYID = obj.DYID,
        //        DYMC = obj.DYMC,
        //        PZH = obj.PZH,
        //        CARDTYPE = obj.CARDTYPE,
        //        LRRQ = obj.LRRQ,
        //        ZJRQ = obj.ZJRQ,
        //        CZYH = obj.CZYH,
        //        CZRQ = obj.CZRQ,
        //        GHRQ = obj.GHRQ,
        //        KSDM = obj.KSDM,
        //        KSMC = obj.KSMC,
        //        YSDM = obj.YSDM,
        //        YSMC = obj.YSMC,
        //        GHHX = obj.GHHX,
        //        YYXH = obj.YYXH,
        //        CFZBZ = obj.CFZBZ,
        //        GHLB = obj.GHLB,
        //        KMDM = obj.KMDM,
        //        KMMC = obj.KMMC,
        //        PZLX = obj.PZLX,
        //        ZDDM = obj.ZDDM,
        //        ZDMC = obj.ZDMC,
        //        JSSJH = obj.JSSJH,
        //        JSBZ = obj.JSBZ,
        //        GHYSDM = obj.GHYSDM,
        //        GHYSMC = obj.GHYSMC,
        //        GHKSDM = obj.GHKSDM,
        //        GHKSMC = obj.GHKSMC,
        //        YBSM = obj.YBSM,
        //        PZLXSM = obj.PZLXSM,
        //        ZHBZ = obj.ZHBZ,
        //        JZBZ = obj.JZBZ,
        //        ZJDM = obj.ZJDM,
        //        ZJMC = obj.ZJMC,
        //        SDBZ = obj.SDBZ,
        //        SDYSDM = obj.SDYSDM,
        //        SDYSXM = obj.SDYSXM,
        //        SCJZYSDM = obj.SCJZYSDM,
        //        SCJZSJ = obj.SCJZSJ,
        //        JZYSDM = obj.JZYSDM,
        //        JZYSMC = obj.JZYSMC,
        //        JZSJ = obj.JZSJ,
        //        FZBZ = obj.FZBZ,
        //        JLZT = obj.JLZT,
        //        MZLGBZ = obj.MZLGBZ,
        //        MEMO = obj.MEMO,
        //        ZQDM = obj.ZQDM,
        //        ZQMC = obj.ZQMC,
        //        YLXMMC = obj.YLXMMC,
        //        DBZDDM = obj.DBZDDM,
        //        DBZDMC = obj.DBZDMC,
        //        SHBZH = obj.SHBZH,
        //        LYBZ = obj.LYBZ,
        //        EMRXH = obj.EMRXH,
        //        CFJZZT = obj.CFJZZT,
        //        BMJB = obj.BMJB,
        //        YYSJD = obj.YYSJD,
        //        JSYY = obj.JSYY,
        //        HZSQKSDM = obj.HZSQKSDM,
        //        HZSQKSMC = obj.HZSQKSMC,
        //        GFBZ = obj.GFBZ,
        //        YYRQ = obj.YYRQ,
        //        JTYSQYBZ = obj.JTYSQYBZ,
        //        JTYSQYYSGH = obj.JTYSQYYSGH,
        //        JTYSQYYSXM = obj.JTYSQYYSXM,
        //        GRJBXXBSH = obj.GRJBXXBSH,
        //        ZZYBZ = obj.ZZYBZ,
        //        FZGHHX = obj.FZGHHX,
        //        GHJE = obj.GHJE,
        //        JZRQ = obj.JZRQ,
        //        QTKH = obj.QTKH,
        //        SFLGBR = obj.SFLGBR,
        //        BLZT = obj.BLZT,
        //        JZMD = obj.JZMD,
        //        YNSBZ = obj.YNSBZ,
        //        HZKSDM = obj.HZKSDM,
        //        HZKSMC = obj.HZKSMC,
        //        GHSJD = obj.GHSJD,
        //        GQSJ = obj.GQSJ,
        //        GQYS = obj.GQYS,
        //        HYZQ = obj.HYZQ,
        //        MCYJ = obj.MCYJ,
        //        PKRKBZ = obj.PKRKBZ,
        //        BRXZ = obj.BRXZ,
        //        TSBZDM = obj.TSBZDM,
        //        TSBZMC = obj.TSBZMC,
        //        BRTSLB = obj.BRTSLB,
        //        COLOR = obj.COLOR,
        //        TXFWBZ = obj.TXFWBZ,
        //        JZFJPX = obj.JZFJPX,
        //        YBJYSM = obj.YBJYSM,
        //        YYHBZ = obj.YYHBZ,
        //        JSZABZ = obj.JSZABZ,
        //        RYDBZ = obj.RYDBZ,
        //        AZBBZ = obj.AZBBZ,
        //        XSNL = obj.XSNL,
        //        ZYDM = obj.ZYDM,
        //        ZYMC = obj.ZYMC,
        //        JHZT = obj.JHZT,
        //        JHYSDM = obj.JHYSDM,
        //        JHYSMC = obj.JHYSMC,
        //        BIRTHTIME = obj.BIRTHTIME,
        //        GHLXDM = obj.GHLXDM,
        //        GHLXMC = obj.GHLXMC,
        //        EZJK = obj.EZJK,
        //        YYYSDM = obj.YYYSDM,
        //        YYYSMC = obj.YYYSMC,
        //        TTBZ = obj.TTBZ,
        //        TSBRBZDM = obj.TSBRBZDM,
        //        TSBRBZMC = obj.TSBRBZMC,
        //        SJDJL = obj.SJDJL,
        //        SJDSM = obj.SJDSM,
        //        //UpdateTime = DateTime.Now,
        //        //UpdateUserId = user.Id,
        //        //UpdateUserName = user.Name
        //        //todo:补充或调整自己需要的字段
        //    });

        //}

        /// <summary>
        /// 获取患者在医生站中正在就诊得记录
        /// </summary>
        /// <param name="patid"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public OUTP_JZJLK QuerySingle(string patid, string name)
        {
            string date = DateTime.Now.ToString("yyyyMMdd");
            return Repository.FindSingle(u => u.HZXM == name && u.PATID.ToString("0") == patid  && u.GHRQ.StartsWith(date)&&u.FZBZ==2);
        }
        /// <summary>
        /// 通过挂号序号查询到医生站挂号信息
        /// </summary>
        /// <param name="patid"></param>
        /// <param name="ghxh"></param>
        /// <returns></returns>
        public OUTP_JZJLK QuerySingleByGHXH(string patid, string ghxh)
        {
            return Repository.FindSingle(u => u.PATID.ToString("0") == patid && u.GHXH.ToString("0") == ghxh);
        }
            
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="repository"></param>
        public OUTP_JZJLKApp(ICisRepository<OUTP_JZJLK> repository) : base(repository)
        {
           
        }
    }
}